@JsonInclude এবং @JsonSetter এর মাধ্যমে Serialization কাস্টমাইজ করা

Java Technologies - জ্যাকসন (Jackson) - Jackson এর Annotations
174

Jackson একটি জনপ্রিয় Java লাইব্রেরি যা JSON ডেটার Serialization (Java Object থেকে JSON এ রূপান্তর) এবং Deserialization (JSON থেকে Java Object এ রূপান্তর) সহজতর করে। এখানে @JsonInclude এবং @JsonSetter ব্যবহার করে কিভাবে Serialization কাস্টমাইজ করা যায় তা আলোচনা করা হলো।


1. @JsonInclude

@JsonInclude অ্যানোটেশনটি ব্যবহার করা হয় JSON এ কোন কোন প্রোপার্টি অন্তর্ভুক্ত হবে তা নির্ধারণ করতে।

সাধারণ ব্যবহার

import com.fasterxml.jackson.annotation.JsonInclude;

@JsonInclude(JsonInclude.Include.NON_NULL) // null মানের প্রোপার্টি বাদ দেওয়া হবে
public class User {
    private String name;
    private Integer age;

    // Getters and Setters
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

ব্যাখ্যা

  • JsonInclude.Include.NON_NULL: শুধুমাত্র non-null প্রোপার্টি JSON এ অন্তর্ভুক্ত হবে।
  • অন্যান্য অপশন:
    • ALWAYS: সব প্রোপার্টি অন্তর্ভুক্ত হবে (default)।
    • NON_EMPTY: null বা খালি ভ্যালু বাদ দেওয়া হবে।
    • NON_DEFAULT: শুধুমাত্র non-default মানের প্রোপার্টি অন্তর্ভুক্ত হবে।

উদাহরণ

User user = new User();
user.setName("John");

ObjectMapper mapper = new ObjectMapper();
String jsonString = mapper.writeValueAsString(user);

System.out.println(jsonString); // Output: {"name":"John"}

2. @JsonSetter

@JsonSetter অ্যানোটেশনটি Deserialization এর সময় নির্দিষ্ট প্রোপার্টি সেট করতে কাস্টমাইজড কনফিগারেশন প্রদান করে।

সাধারণ ব্যবহার

import com.fasterxml.jackson.annotation.JsonSetter;

public class User {
    private String name;

    @JsonSetter("user_name") // JSON এর "user_name" ফিল্ড "name" প্রোপার্টিতে সেট হবে
    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

ব্যাখ্যা

  • @JsonSetter একটি কাস্টম JSON ফিল্ড ম্যাপ করার জন্য ব্যবহৃত হয়, যা Deserialization এর সময় কাজ করে।

উদাহরণ

String json = "{ \"user_name\": \"Alice\" }";

ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(json, User.class);

System.out.println(user.getName()); // Output: Alice

দুইটি একসাথে ব্যবহার

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonSetter;

@JsonInclude(JsonInclude.Include.NON_EMPTY) // খালি ভ্যালু বাদ
public class User {
    private String name;

    @JsonSetter("user_name") // JSON ফিল্ড ম্যাপ
    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

উদাহরণ

String json = "{ \"user_name\": \"Bob\", \"age\": \"\" }";

ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(json, User.class);

System.out.println(user.getName()); // Output: Bob

String serializedJson = mapper.writeValueAsString(user);
System.out.println(serializedJson); // Output: {"name":"Bob"}

  • @JsonInclude ব্যবহার করে আপনি Serialization এর সময় নির্দিষ্ট প্রোপার্টি বাদ দিতে পারেন।
  • @JsonSetter ব্যবহার করে Deserialization এর সময় JSON ফিল্ড এবং Java ফিল্ড এর মধ্যে ম্যাপিং কাস্টমাইজ করতে পারেন।
  • এই অ্যানোটেশনগুলো ডেটা মডেলিং এবং JSON ফর্ম্যাটের উপর নিয়ন্ত্রণ বাড়াতে গুরুত্বপূর্ণ ভূমিকা পালন করে।
Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...